Systems and Methods for Automatically Generating Top Level Index Files

ABSTRACT

Systems and methods for automatically generating top level index files for use in adaptive bitrate streaming in accordance with embodiments of the invention are disclosed. One embodiment of the method of the invention includes receiving a request from a playback device at a playback server, where the request identifies a piece of content, retrieving a list of assets associated with the identified piece of content using the playback server, filtering the list of assets using at least one predetermined criterion using the playback server, generating a top level index file describing each asset in the filtered list of assets using the playback server, and sending the top level index file to the playback device using the playback server.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.17/467,027, entitled “Systems, Methods, and Media for Playing BackProtected Video Content by Using Top Level Index File” to Braness etal., filed Sep. 3, 2021, which is a continuation application of U.S.patent application Ser. No. 16/703,668, entitled “Systems, Methods, AndMedia for Playing Back Protected Video Content By Using Top Level IndexFile” to Braness et al., filed Dec. 4, 2019 and issued on Sep. 7, 2021as U.S. Pat. No. 11,115,450 filed Sep. 7, 2021, which is a continuationapplication of U.S. patent application Ser. No. 16/207,405, entitled“Systems and Methods for Automatically Generating Top Level Index Files”to Braness et al., filed Dec. 3, 2018 and issued on Jan. 21, 2020 asU.S. Pat. No. 10,542,061, which is a continuation application of U.S.patent application Ser. No. 15/658,057, entitled “Systems and Methodsfor Automatically Generating Top Level Index Files” to Braness et al.,filed Jul. 24, 2017 and issued on Dec. 11, 2018 as U.S. Pat. No.10,154,075, which is a continuation of U.S. patent application Ser. No.15/009,593, entitled “Systems and Methods for Automatically GeneratingTop Level Index Files” to Braness et al., filed Jan. 28, 2016 and issuedon Jun. 12, 2018 as U.S. Pat. No. 9,998,515, which is a continuation ofU.S. patent application Ser. No. 14/336,392, entitled “Systems andMethods for Automatically Generating Top Level Index Files” to Branesset al., filed Jul. 21, 2014 and issued on Feb. 23, 2016 as U.S. Pat. No.9,270,720, which is a continuation of U.S. patent application Ser. No.13/341,789, entitled “Systems and Methods for Automatically GeneratingTop Level Index Files” to Braness et al., filed Dec. 30, 2011 and issuedon Jul. 22, 2014 as U.S. Pat. No. 8,787,570, which claims priority toU.S. Provisional Application Ser. No. 61/529,403, entitled “AutomaticGeneration of SMIL Files” to Braness et al., filed Aug. 31, 2011, thedisclosures of which are incorporated herein by reference in theirentireties.

FIELD OF THE INVENTION

The present invention generally relates to streaming media and morespecifically to the automatic generation of top level index files foruse in adaptive bitrate streaming.

BACKGROUND

The term streaming media describes the playback of media on a playbackdevice, where the media is stored on a server and continuously sent tothe playback device over a network during playback. Typically, theplayback device stores a sufficient quantity of media in a buffer at anygiven time during playback to prevent disruption of playback due to theplayback device completing playback of all the buffered media prior toreceipt of the next portion of media. Adaptive bit rate streaming oradaptive streaming involves detecting the present streaming conditions(e.g. the playback device's network bandwidth and video decodingcapacity) in real time and adjusting the quality of the streamed mediaaccordingly. Typically, the source media is encoded as separate streamshaving different maximum bitrates and the playback device or clientswitches between streaming the different encodings depending onavailable resources. When a playback device commences adaptive bitratestreaming, the playback device typically starts by requesting portionsof media from an initial set of streams. As the playback devicedownloads the requested media, the playback device can measure theavailable bandwidth. In the event that the available bandwidth increasesor decreases, the playback device can switch to higher or lower bitratestreams.

Adaptive streaming solutions typically utilize Hypertext TransferProtocol (HTTP), published by the Internet Engineering Task Force andthe World Wide Web Consortium as RFC 2616, to stream media between aserver and a playback device. HTTP is a stateless protocol that enablesa playback device to request a byte range within a file. HTTP isdescribed as stateless, because the server is not required to recordinformation concerning the state of the playback device requestinginformation or the byte ranges requested by the playback device in orderto respond to requests received from the playback device.

In adaptive streaming systems, the source media is typically stored on amedia server as a top level index file pointing to a number of alternatestreams that contain the actual video and audio data. Each stream istypically stored in one or more container files. Different adaptivestreaming solutions typically utilize different index and mediacontainers. The Synchronized Multimedia Integration Language (SMIL)developed by the World Wide Web Consortium is utilized to create indexesin several adaptive streaming solutions including IIS Smooth Streamingdeveloped by Microsoft Corporation of Redmond, Washington, and FlashDynamic Streaming developed by Adobe Systems Incorporated of San Jose,California. HTTP Adaptive Bitrate Streaming developed by Apple ComputerIncorporated of Cupertino, California implements index files using anextended M3U playlist file (.M3U8), which is a text file containing alist of URIs that typically identify a media container file. The mostcommonly used media container formats are the MP4 container formatspecified in MPEG-4 Part 14 (i.e. ISO/IEC 14496-14) and the MPEGtransport stream (TS) container specified in MPEG-2 Part 1 (i.e. ISO/IECStandard 13818-1). The MP4 container format is utilized in IIS SmoothStreaming and Flash Dynamic Streaming. The TS container is used in HTTPAdaptive Bitrate Streaming.

SUMMARY OF THE INVENTION

Systems and methods in accordance with embodiments of the inventionautomatically generate top level index files for use in adaptive bitratestreaming. One embodiment of the method of the invention includesreceiving a request from a playback device at a playback server, wherethe request identifies a piece of content, retrieving a list of assetsassociated with the identified piece of content using the playbackserver, filtering the list of assets using at least one predeterminedcriterion using the playback server, generating a top level index filedescribing each asset in the filtered list of assets using the playbackserver, and sending the top level index file to the playback deviceusing the playback server.

In a further embodiment of the method of the invention, the request fromthe playback device also includes information describing thecapabilities of the playback device, and the playback server filters thelist of assets based upon the capabilities of the playback device.

In another embodiment of the method of the invention, the informationdescribing the capabilities of the playback device is a productidentifier, and the method further including retrieving at least onedevice capability based upon the product identifier using the playbackserver.

In a still further embodiment of the method of the invention, the devicecapability is at least one device capability selected from the groupconsisting of: display aspect ratio, anticipated maximum networkconnection data rate, device outputs, supported formats, device buffersize, device resolution, device region, and device language.

In still another embodiment of the method of the invention, the at leastone predetermined criterion includes whether the playback device hasaccess to assets associated with premium content.

In a yet further embodiment of the method of the invention, the requestfrom the playback device also includes information indicative of thegeographic location of the playback device, and the at least onepredetermined criterion includes whether an asset is permitted to beplayed back in the geographic location indicated by the request.

In yet another embodiment of the method of the invention, the at leastone predetermined criterion includes filtering the assets based upon atleast one language.

In a further embodiment again of the method of the invention, theplayback server maintains a database of assets associated with specificpieces of content.

In another embodiment again of the method of the invention, the toplevel index file is a SMIL file.

In a further additional embodiment of the method of the invention,generating a top level index file describing each asset in the filteredlist of assets using the playback server includes generating an XMLstring including a URI for each asset.

Another additional embodiment of the method of the invention alsoincludes generating an XML string including a SWITCH element to describealternative streams for use in adaptive bitrate streaming.

A still yet further embodiment of the method of the invention alsoincludes generating an XML string including an EXCL element to describealternative streams for use in conventional streaming.

In still yet another embodiment of the method of the invention, the URIreferences a container file and the XML string for each assets includesan element that defines the size of a header section of the containerfile.

In a still further embodiment again of the method of the invention, theXML string includes an element that identifies the encoding of theasset.

In another embodiment again of the method of the invention, the XMLstring of a video asset includes at least one element selected from thegroup including an element that describes the maximum bitrate of thevideo, an element that describes the width and height of the video, andan element that describes the video buffer verifier size of the video.

A still further additional embodiment of the method of the inventionincludes receiving a request from a playback device at a playbackserver, where the request identifies a piece of content, retrieving alist of assets associated with the identified piece of content using theplayback server, filtering the list of assets using at least onepredetermined criterion using the playback server, generating a toplevel index file describing each asset in the filtered list of assetsusing the playback server, sending the top level index file to theplayback device using the playback server, retrieving cryptographicinformation using the playback server, where the cryptographicinformation is used to access protected streams described in the toplevel index file, and providing the cryptographic information to theplayback device using the playback server.

In still another additional embodiment of the method of the invention,the cryptographic information is retrieved by the playback server inresponse to a request from a playback device to playback the content.

In a yet further embodiment again of the method of the invention, thecryptographic information is retrieved by the playback server from adatabase of cryptographic information and is encrypted so that theplayback device can access the cryptographic information usingcryptographic information stored on the playback device.

In yet another embodiment again of the method of the invention, thecryptographic information is retrieved by the playback server from adigital rights management server.

A yet further additional embodiment of the method of the invention alsoincludes confirming that the number of devices on which the user iscurrently playing back content is less than a predetermined concurrencylimit.

Yet another additional embodiment of the method of the invention alsoincludes receiving a play event report from the playback device at theplayback server.

A further additional embodiment again of the method of the inventionalso includes providing a command to the playback device using theplayback server in response to the play event report.

In another additional embodiment again of the method of the invention,the play event report includes a playback location.

A still yet further embodiment again of the method of the invention alsoincludes sending a command to resume playback at the playback locationindicated in the play event report to a second playback device.

Still yet another embodiment again of the method of the invention alsoincludes sending a command to stop playback to the playback device thatgenerated the play event report using the playback server.

A further embodiment of the invention includes a database that storesdescriptions of assets associated with specific pieces of content, and aprocessor configured using a playback management application. Inaddition, the playback management application configures the processorto: receive a request from a playback device identifying a piece ofcontent; retrieve a list of assets associated with the identified pieceof content; filter the list of assets using at least one predeterminedcriterion; generate a top level index file describing each asset in thefiltered list of assets; and send the top level index file to theplayback device.

Another embodiment includes the request from the playback device alsoincludes information describing the capabilities of the playback device,and the playback management application configures the processor tofilter the list of assets based upon the capabilities of the playbackdevice.

In a still further embodiment, the information describing thecapabilities of the playback device is a product identifier, and theplayback management application further configures the processor toretrieve at least one device capability based upon the productidentifier.

In still another embodiment, wherein the device capability is at leastone device capability selected from the group consisting of: displayaspect ratio, anticipated maximum network connection data rate, deviceoutputs, supported formats, device buffer size, display resolution,device region, and device language.

In a yet further embodiment, the at least one predetermined criterionincludes whether the playback device has access to assets associatedwith premium content.

In yet another embodiment, the request from the playback device alsoincludes information indicative of the geographic location of theplayback device, and the at least one predetermined criterion includeswhether an asset is permitted to be played back in the geographiclocation indicated by the request.

In a further embodiment again, the at least one predetermined criterionincludes filtering the assets based upon one or more languages.

In another embodiment again, the playback server maintains a database ofassets associated with specific pieces of content.

In a further additional embodiment, the top level index file is a SMILfile.

In another additional embodiment, the playback management applicationconfigures the processor to generate a top level index file describingeach asset in the filtered list of assets by configuring the processorto generate an XML string including a URI for each asset.

In a still yet further embodiment, the playback management applicationfurther configures the processor to generate an XML string including aSWITCH element to describe alternative streams for use in adaptivebitrate streaming.

In still yet another embodiment, the playback management applicationfurther configures the processor to generate an XML string including anEXCL element to describe alternative streams for use in conventionalstreaming.

In a still further embodiment again, the URI references a container fileand the XML string for each asset includes an element that defines thesize of a header section of the container file.

In still another embodiment again, the XML string includes an elementthat identifies the encoding of the asset.

In a still further additional embodiment, the XML string of a videoasset includes at least one element selected from the group including anelement that describes the maximum bitrate of the video, an element thatdescribes the width and height of the video, and an element thatdescribes the video buffer verifier size of the video.

In still another additional embodiment, playback management applicationfurther configures the processor to retrieve cryptographic information,where the cryptographic information is used to access protected streamsdescribed in the top level index file, and provide the cryptographicinformation to the playback device.

In a yet further embodiment again, the playback management applicationconfigures the processor to retrieve the cryptographic information inresponse to a request from a playback device to playback the content.

In yet another embodiment again, the playback management applicationconfigures the processor to retrieve the cryptographic information froma database of cryptographic information, and encrypt the retrievedcryptographic information so that the playback device can access theretrieved cryptographic information in the clear using cryptographicinformation stored on the playback device.

In a yet further additional embodiment, the playback managementapplication configures the processor to retrieve the cryptographicinformation from a digital rights management server.

In yet another additional embodiment, the playback managementapplication configures the processor to confirm that the number ofdevices on which the user is playing back content is less than apredetermined concurrency limit.

In a further additional embodiment again, the playback managementapplication configures the processor to receive a play event report fromthe playback device.

In another additional embodiment again, the playback managementapplication configures the processor to provide a command to theplayback device in response to the play event report.

In a still yet further embodiment again, the play event report includesa playback location.

In still yet another embodiment again, the playback managementapplication further configures the processor to send a command to resumeplayback at the playback location indicated in the play event report toa second playback device.

In a yet further additional embodiment again, the playback managementapplication further configures the processor to send a command to stopplayback to the playback device that generated the play event reportusing the playback server.

Another further embodiment includes a machine readable medium containingprocessor instructions, where execution of the instructions by aprocessor causes the processor to perform a process including receivinga request from a playback device identifying a piece of content,retrieving a list of assets associated with the identified piece ofcontent, filtering the list of assets using at least one predeterminedcriterion, generating a top level index file describing each asset inthe filtered list of assets; and sending the top level index file to theplayback device.

In still another further embodiment, the execution of the instructionsby a processor causes the processor to perform a process furtherincluding retrieving cryptographic information, where the cryptographicinformation is used to access protected streams described in the toplevel index file, and providing the cryptographic information to theplayback device.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a network diagram of a streaming system including a playbackserver in accordance with an embodiment of the invention.

FIG. 2 is a system diagram of a playback device in accordance with anembodiment of the invention.

FIG. 3 is a flow chart illustrating a process for obtaining a top levelindex file and cryptographic information from a playback server tostream content from a content distribution network in accordance with anembodiment of the invention.

FIG. 4 is a flow chart illustrating a process for automaticallygenerating a top level index file in accordance with an embodiment ofthe invention.

FIG. 5 is a flow chart illustrating a process for generating a list ofstreams for inclusion in an automatically generated top level index filein accordance with an embodiment of the invention.

FIG. 6 is a flow chart illustrating a process for generating a SMIL filecontaining a top level index in accordance with an embodiment of theinvention.

FIG. 7 is a flow chart illustrating a process for providingcryptographic information to a playback device in accordance with anembodiment of the invention.

FIG. 8 is a flow chart illustrating a process for handling play eventsreceived from playback devices in accordance with an embodiment of theinvention.

FIG. 9 is a timing diagram illustrating communication between a playbackdevice and a playback server and a content distribution network duringan adaptive bitrate streaming process that utilizes an automaticallygenerated top level index file in accordance with an embodiment of theinvention.

DETAILED DISCLOSURE OF THE INVENTION

Turning now to the drawings, systems and methods for automaticallygenerating top level index files for use in adaptive bitrate streamingin accordance with embodiments of the invention are illustrated. A toplevel index is a file that describes the location and content ofcontainer files containing streams of media (e.g. audio, video,metadata, and subtitles) that can be utilized by the playback device tostream and playback content. In adaptive bitrate streaming systems, thetop level index file typically references the alternative streams thatthe playback device can switch between. In many embodiments, a top levelindex file is generated in response to a request from a playback device.In several embodiments, the process of generating the top level indexfile involves determining all of the assets or container filescontaining streams associated with a specific piece of content and thenfiltering the assets based upon one or more predetermined criterion. Ina number of embodiments, the assets are filtered based uponpredetermined criteria including (but not limited to) business rulesdefined by the content owner, device capabilities, and/or informationassociated with a user account. In many embodiments, the top level videofile that is generated is a SMIL file. In other embodiments, any of avariety of file formats can be utilized to generate top level indexfiles in accordance with embodiments of the invention.

In several embodiments, a playback server automatically generates toplevel index files in response to a request from a playback device andthe playback server can also provide the playback device withcryptographic information enabling playback of protected streams ofcontent. In a number of embodiments, the playback device provides playevent reports to the playback server and the playback server can trackthe playback location of the streams being played back by the playbackdevice. The playback location can be utilized to enable a user to shiftbetween watching content on different playback devices. The user cancommence playback on a first device and then request playback on asecond device. When the playback server receives a playback request froma second playback device, the playback server can suspend playback onthe first playback device and provide an instruction to the secondplayback device to commence playback at the last playback locationreported by the first playback device. Playback devices, playbackservers and processes for automatically generating top level index filesin response to requests from playback devices in accordance withembodiments of the invention are discussed further below.

Streaming System Architecture

Adaptive bitrate streaming systems in accordance with many embodimentsof the invention include a playback server that automatically generatestop level index files in response to requests from playback devices. Astreaming system in accordance with an embodiment of the invention isillustrated in FIG. 1 . The streaming system 10 includes a number ofplayback devices 12 configured to request streaming of content fromremote servers within content delivery networks (CDNs) 14 via a network16 such as the Internet. In order to stream content, the playback deviceobtains a top level index file that is automatically generated by theplayback server 18 using a database 20 of available assets (i.e.container files containing streams of content associated with specifictitles) and a set of predetermined filters or criteria.

To perform adaptive bitrate streaming, the playback devices 12 selectcontent from different alternative streams described in the top levelindex file. Alternative streams are streams that encode the same mediacontent in different ways. In many instances, alternative streams encodemedia content (such as but not limited to video) at different maximumbitrates. In a number of embodiments, the alternative streams areencoded with different resolutions and/or at different frame rates. Inmany embodiments, the top level index file generated by the playbackserver 18 describes at least the maximum bitrates of each of thealternative streams. The playback device can select one or more streamsfor conventional streaming or can switch between alternative streams toperform adaptive bitrate streaming.

In several embodiments, playback devices 12 are able to purchase contentfor streaming via one or more online content stores 22. In manyinstances, the playback device purchases content via an online contentstore and receives an electronic token or ticket that the playbackdevice can provide to the playback server 18 to obtain access to thepurchased content. When the playback server 18 receives the ticket, theplayback server automatically generates a top level index file for theplayback device using information stored in the database 20. Theplayback server is typically a conventional server system configuredusing a playback management application and in such a way that theplayback server can access the database 20. In a number of embodiments,playback devices 12 provide information concerning their playbackcapabilities to the playback server 18 and the server automaticallygenerates top level index files by filtering assets associated with apurchased piece of content based upon device capabilities. Suchcapabilities include but are not limited to playback capabilities,display aspect ratio, and/or anticipated maximum network connection datarate. In a number of embodiments, the capabilities of a specificplayback device 12 are communicated to the playback server 18 in theform of a product identifier or product ID. The playback server 18 canmaintain a database of product IDs and associated device capabilities,and can utilize the product IDs provided by playback devices to retrievethe associated device capabilities and apply filters to lists ofavailable assets when generating a top level index file. Systems andmethods for assigning product IDs and associating them with informationconcerning the capabilities of the devices to which the product IDs areassigned are described in U.S. Provisional Patent Application Ser. No.61/581,598 to Grab et al., entitled “Systems and Methods for IdentifyingConsumer Electronic Products Using a Playback Device with a ProductIdentifier”, filed Dec. 29, 2011. The disclosure of U.S. ProvisionalPatent Application Ser. No. 61/581,598 is incorporated by referenceherein in its entirety. Other filters that can be applied by playbackservers in accordance with embodiments of the invention include (but arenot limited to) filters based upon the location of the playback device(i.e. country/region), and languages associated with a specific user.Various filters that can be applied to generate a top level index filein accordance with embodiments of the invention are discussed furtherbelow.

When the playback server 18 receives a play request, the playback serverretrieves cryptographic information required to playback protectedstreams of content. The playback device can then request portions ofcontainer files containing streams of content from one or more serverswithin a content delivery network 14 and can use the cryptographicinformation to access protected content. Systems and methods for thedigital rights management of protected streams used in adaptive bitratestreaming are described in U.S. patent application Ser. No. 13/340,623to Kiefer et al., entitled “Systems and Methods for Playing BackAlternative Streams of Protected Content Protected Using CommonCryptographic Information”, filed Dec. 29, 2011. The disclosure of U.S.patent application Ser. No. 13/340,623 is incorporated by referenceherein in its entirety.

During playback, playback devices 12 can provide play event reports tothe playback server 18. The play event reports can include informationincluding (but not limited to) the current stream(s) from which theplayback device is requesting data and the current playback location ofthe playback device. In many embodiments, the playback server 18responds to the play event reports by instructing the playback device tocontinue playback or to cease playback. In several embodiments, theplayback server enforces concurrency limits on playback devices. Theterm concurrency limit in the context of adaptive bitrate streamingsystems describes the number of playback devices that can simultaneouslyplayback content associated with a specific user account. When aconcurrency limit is exceeded, the playback server 18 can send aninstruction to a playback device 12 directing it to cease playback. In anumber of embodiments, playback location information provided in playevent reports can be utilized to enable a user to switch from playingback content on a first device to playing back content on a seconddevice and the second device will automatically resume content playbackat the last playback location of the first playback device. In addition,a user that suspends playback on a first playback device can resumeplayback on the same playback device or a second playback device at somelater point in time.

Although a specific streaming system is illustrated in FIG. 1 , playbackservers that automatically generate top level index files can beincorporated into any of a variety of streaming system architectures inaccordance with embodiments of the invention. Playback devices that canbe utilized to perform network bandwidth measurements during a streamingsession in accordance with embodiments of the invention are discussedfurther below.

Playback Devices

In the embodiment illustrated in FIG. 1 , playback devices includepersonal computers, CE players, and mobile phones. In other embodiments,playback devices can include consumer electronics devices such as DVDplayers, Blu-ray players, televisions, set top boxes, video gameconsoles, tablets, and other devices that are capable of connecting to aserver and playing back encoded media. The basic architecture of aplayback device in accordance with an embodiment of the invention isillustrated in FIG. 2 . The playback device 30 includes a processor 32in communication with non-volatile memory 34 and volatile memory 36. Inthe illustrated embodiment, the non-volatile memory includes a clientapplication 38 that configures the processor and the playback device tostream content from a remote server. The non-volatile memory 34 alsoincludes device cryptographic data 39 that can be utilized in accessingencrypted content and a product ID 40 that can be utilized to identifythe capabilities of the playback device.

During operation, the client application 38 can configure the playbackdevice to purchase content from a content store and request a top levelindex file 42 from a playback server. As noted above, the request for atop level index file can include the product ID 40 of the playbackdevice, which can be used to filter the assets that are described in thetop level index file. When the top level index file 42 is received fromthe playback server, the client application 38 configures the playbackdevice to store the top level index file 42 in memory 36 and requestcontent cryptographic information 44 to playback requested streams fromthe playback server (or a separate DRM server) in response to a userinstruction to playback content. The content cryptographic information44 received from the playback server can also be stored in memory 36.The client application 38 can then configure the playback device 30 toplayback content by requesting portions of container files containingcontent from a server within a content delivery network. The specificcontainer files selected by the client application 38 can be determinedbased upon the information available to the client application withinthe top level index file 42. When the playback device receives therequested portions of the container files, the client application 38 canaccess protected content within the requested portions of the containerfiles using the content cryptographic information 44. The clientapplication can continue to request and playback content from differentcontainer files depending upon the prevailing streaming conditions untila user instruction suspending playback is received or until playbackcompletes.

Although a specific playback device architecture is illustrated in FIG.2 , any of a variety of architectures including architectures where theclient application is located on disk or some other form of storage andis loaded into volatile memory at runtime can be utilized to implementplayback devices for use in adaptive bitrate streaming systems inaccordance with embodiments of the invention. Furthermore, any of avariety of system architectures including (but not limited) to thesystem architecture illustrated in FIG. 1 can be utilized to performadaptive bitrate streaming using top level index files that areautomatically generated in response to request from playback devices inaccordance with embodiments of the invention.

Content Playback

A process for playing back content using a top level index filegenerated in response to a request from a playback device in accordancewith an embodiment of the invention is illustrated in FIG. 3 . Theprocess 50 includes purchase (52) of content. The purchase can beperformed using a playback device or can be performed using anotherdevice. In many embodiments, the purchase is made via an online contentstore that provides an electronic ticket or token that can be utilizedto obtain access to the content. In order to access the content, theplayback device requests the generation of a top level index filecustomized for the specific playback device from a playback server. Inmany embodiments, the top level index file is customized in the sensethat the playback server filters all available assets to generate a toplevel index file that describes the assets that are available and/orbest suited to playback by the playback device. Once the custom toplevel index file is retrieved (54), the playback device obtains (56)cryptographic information that enables playback of protected streamsidentified within the top level index file. In many embodiments,playback devices wait until a playback request is received from a userand then requests cryptographic information from the playback server.

When a playback device possesses a top level index file and anynecessary cryptographic information, the playback device can commencestreaming (58) content by requesting portions of one or more containerfiles containing encoded media. Any of a variety of processes can beutilized to select initial streams including (but not limited to)selecting the lowest bitrate streams, performing a bandwidth probe in amanner similar to the manner disclosed in U.S. patent application Ser.No. 13/251,061 to van der Schaar et al., entitled “Systems and Methodsfor Determining Available Bandwidth and Performing Initial StreamSelection When Commencing Streaming Using Hypertext Transfer Protocol”,filed Sep. 30, 2011, or estimating available bandwidth using anothertechnique. The disclosure of U.S. patent application Ser. No. 13/251,061is incorporated by reference herein in its entirety.

Once playback commences (60), adaptive bitrate streaming can beperformed. During playback, play event reports can be provided to aplayback server to provide information concerning the playback status ofthe playback device periodically or in response to various eventsincluding (but not limited to) user instructions received by theplayback device. When a play event report is provided to the playbackserver, the playback server can provide a play event instruction to theplayback device. In the illustrated embodiment, the play eventinstructions that can be received (62) by the playback device includinga “PLAY” instruction to continue playback and a “STOP” instruction tocease playback. As is discussed further below, the ability of a playbackserver to stop playback on a playback device enables the playback deviceto enforce concurrency requirements across multiple playback devicesassociated with a user. The combination of the play event reports andthe event playback instructions can also be utilized by the playbackserver to enable a second playback device to resume playback of contentat the last playback location reported by a first playback device. Inthis way, a user can seamlessly move between playback devices withoutthe need to seek to a location to continue playback.

Although a specific process is illustrated in FIG. 3 , any of a varietyof processes can be utilized for requesting a customized top level indexfile and playing back content in accordance with embodiments of theinvention. Playback servers and processes for automatically generatingindex files in accordance with embodiments of the invention are

Automatic Generation of Top Level Indexes

Playback servers in accordance with embodiments of the inventionmaintain a database of assets associated with specific pieces of contentand can be configured by a playback management application to retrieveand filter information concerning assets to automatically generate a toplevel index file for a specific playback device. The databasesmaintained by the playback servers can list the name of the filecontaining the asset, and the content delivery network(s) on which theasset is located. When the asset is a video stream, the database candescribe characteristics of the video stream including (but not limitedto) a language associated with the video stream, the maximum bitrate atwhich the video stream is encoded, the frame rate of the video stream,the resolution and/or sample aspect ratio of the video stream. When theasset is an audio stream, the database can describe characteristics ofthe audio stream including (but not limited to) the language of theaudio stream, the encoding of the audio stream and the bandwidthrequirements of the audio stream. When the asset is a subtitle stream,the database can describe characteristics of the subtitle streamincluding (but not limited to) the language of the subtitle stream, theencoding of the subtitle stream and the bandwidth requirements of thesubtitle stream. In addition to maintaining information concerningassets, the playback device can maintain information concerning playbackcapabilities of playback devices. In a number of embodiments, theinformation concerning playback capabilities of different playbackdevices is indexed using a product ID. In many embodiments, the playbackdevice also maintains information concerning rules regulating the usageof different assets based upon criteria including (but not limited to)the type of playback device, the playback capabilities of a playbackdevice, the location of the playback device (e.g. country/region),and/or requested language(s). Although specific pieces of informationare described above as being associated in a database maintained by aplayback server, any of a variety of pieces of information can bemaintained in any of a variety of data structures to enable generationof a top level index file by a playback server in accordance with anembodiment of the invention. As is discussed further below, theinformation maintained by the playback server can be filtered in realtime in response to a request for a top level index file from a playbackdevice to generate a top level index file that only includes links tothe assets that the playback device is permitted to playback.

A process for generating a top level index file using informationconcerning assets associated with specific pieces of content maintainedby a playback server in accordance with an embodiment of the inventionis illustrated in FIG. 4 . In the illustrated embodiment, the process 70commences when the playback server receives (72) a request for a toplevel index file with respect to a specific piece of content from aspecific playback device. As discussed above, the request can includeinformation describing the playback device including (but not limitedto) the playback capabilities of the playback device, a user account towhich the playback device is registered, and information indicative ofthe geographic location of the playback device (e.g. the I.P. address ofthe playback device). In many embodiments, the capabilities of theplayback device are identified using a product ID, which is associatedwith specific playback capabilities in a database accessible to theplayback server.

The playback server retrieves (74) assets associated with the requestedpiece of content. The playback server filters (76) the assets based uponone or more filters associated with the capabilities of the playbackdevice, the preferences of the user, and the requirements of the contentowner. Accordingly, different top level index files can be generatedwith respect to the same content dependent on factors including (but notlimited to) differences in playback capabilities between devices,differences in geographic location, and/or differences in languagepreferences associated with the playback devices. Processes forretrieving and filtering assets associated with a specific piece ofcontent in accordance with an embodiment of the invention are discussedfurther below. Following filtering, the remaining assets can be utilizedto generate (78) the top level index file, which can be provided (80) tothe playback device. In a number of embodiments, the top level indexfile is securely forward using a secure communication techniqueincluding but not limited to Secure Socket Layer (SSL) communication oran equivalent secure communication protocol.

Although a specific process for generating a top level index file inaccordance with an embodiment of the invention is illustrated in FIG. 4, any of a variety of processes involving collecting informationconcerning assets associated with a specific piece of content andgenerating an index file that indexes the assets that are to be madeavailable to a playback device by an adaptive bitrate streaming systemcan be utilized in accordance with embodiments of the invention.Specific processes for filtering the assets that are included in a toplevel index file in accordance with embodiments of the invention arediscussed below.

Filtering Assets for Inclusion in Top Level Index Files

Typically, more assets or streams are created than are necessary foradaptive bitrate streaming of content by a playback device. In manyinstances, video streams are created for different classes of playbackdevice. For example, lower bitrate streams can be created for devicesthat will stream content over cellular data networks and higher bitratestreams can be created for devices that will stream content over a homenetwork connected to the Internet via a high speed Internet connection.In addition, different video streams can be created with differentaspect ratios and different audio streams can be created for differentlanguages. In several embodiments, content stores offer premium highresolution content and a playback device that has only purchased lowerresolution content is not permitted to access high resolution content.In many embodiments, specific streams may not be accessible ingeographic regions. When a top level index file is created in real timein response to a request from a specific playback device, the playbackserver that creates the top level index file can initially gatherinformation concerning the assets associated with a specific piece ofcontent or title. The playback server can then apply one or more filtersto the list of available assets to produce a list of assets thatsatisfies criteria including (but not limited to) criteria with respectto the capabilities of the playback device, the preferences of the user,and/or the requirements of the content owner.

A process for producing a list of assets to which a playback device isgranted access in accordance with an embodiment of the invention isillustrated in FIG. 5 . The process 90 includes retrieving video (92),audio (94), and/or subtitle or subtext (96) assets. In many embodiments,the process can also include retrieving other types of assets including(but not limited to) metadata assets and/or trick play stream assets.When the assets associated with a piece of content have been retrieved,the playback server can filter (98) the assets to exclude assets thatare not capable of being played back by the playback device, notpermitted to be played back, or are not desired to be played back.

The information concerning assets associated with the content collectedby the playback server can include information concerning assets thatare both capable of being played back by the playback device andpermitted to be played back by the content owner. However, theinformation may also include information concerning assets that theplayback device is not permitted to playback, or assets that are notdesired for playback by the user. Assets that may not be permitted forplayback can include (but are not limited to) premium content assetsthat have not been purchased (e.g. a high definition video stream) orassets that are not permitted to be played back within a specificgeographic location or region, assets that the playback device isincapable of playing back including (but to limited to) streams encodedin unsupported formats or using profiles and/or buffer sizes that arenot supported by the playback device, or assets that the playback deviceis not securely capable of playing back (e.g. the playback device has anunencrypted digital output and a content provider is not willing toallow high definition content to be streamed to such a device). Assetsthat a user may not wish to playback include (but is not limited to)content in a language that is not relevant to a specific user, videoassets having an aspect ratio that is not the same as the display aspectratio of the playback device (where video assets are associated with thecontent that have the same aspect ratio as the device's display aspectratio), content encoded at a resolution beyond the resolution of theplayback device's display, and/or content encoded at a maximum bitrateexceeding the maximum data rate of the playback device's networkconnection. Although specific filters are discussed above, the criteriautilized by a playback server to filter (98) the initial list of assetsto generate a list of assets for inclusion in a top level index file areonly limited by the requirements of a specific adaptive bitratestreaming system.

Once filtering has been applied to the list of assets, a filtered listof assets can be returned (100) and used to generate a top level indexfile. In the illustrated embodiment, the filtered list of assetscorresponds to the content streams that the playback server ispermitting the playback device to access.

Although a specific process is illustrated in FIG. 5 , any of a varietyof processes can be utilized to retrieve and filter the assets that willbe included in a top level index file as appropriate to the requirementsof a specific application in accordance with an embodiment of theinvention.

Generating a Top Level Index SMIL File

In a number of embodiments, the top level index file generated by aplayback server in response to a request from a playback device is aSMIL file, which is an XML file that includes a list of URIs describingeach of the streams and the container files that contain the streams.The URI can include information such as the “system-bitrate” of thestream contained within the stream and information concerning thelocation of specific pieces of data within the container file.

The basic structure of a SMIL file involves providing an XML declarationand a SMIL element. The SMIL element defines the streams or assetsavailable for by the playback device and includes a HEAD element, whichis typically left empty and a BODY element that typically only containsa PAR (parallel) element. The PAR element describes streams that can beplayed simultaneously (i.e. include media that can be presented at thesame time).

The SMIL specification defines a number of child elements to the PARelement that can be utilized to specify the streams available for use inadaptive bitrate streaming. The VIDEO, AUDIO and TEXTSTREAM elements canbe utilized to define a specific video, audio or subtitle stream. TheVIDEO, AUDIO and TEXTSTREAM elements can collectively be referred to asmedia objects. The basic attributes of a media object are the SRCattribute, which specifies the full path or a URI to a container filecontaining the relevant stream, and the XML: LANG attribute, whichincludes a 3 letter language code. Additional information concerning amedia object can be specified using the PARAM element. The PARAM elementis a standard way within the SMIL format for providing a general namevalue pair. In a number of embodiments of the invention, specific PARAMelements are defined that are utilized during adaptive bitratestreaming.

In many embodiments, a “header-request” PARAM element is defined thatspecifies the size of the header section of the container filecontaining the stream. The value of the “header-request” PARAM elementtypically specifies the number of bytes between the start of the fileand the start of the encoded media within the file. In many embodiments,the header contains information concerning the manner in which the mediais encoded and a playback device retrieves the header prior to playbackof the encoded media in order to be able to configure the decoder forplayback of the encoded media. An example of a “header-request” PARAMelement is as follows:

<param  name=“header-request”  value=“1026”  valuetype=“data” />

In a number of embodiments, a “mime” PARAM element is defined thatspecifies the MIME type of the stream. A “mime” PARAM element thatidentifies the stream as being an H.264 stream (i.e. a stream encoded inaccordance with the MPEG-4 Advanced Video Codec standard) is as follows:

<param  name=“mime”  value=“V_MPEG4/ISO/AVC”  valuetype=“data” />

The MIME type of the stream can be specified using a “mime” PARAMelement as appropriate to the encoding of a specific stream (e.g. AACaudio or UTF-8 text stream).

When the media object is a VIDEO element, additional attributes aredefined within the SMIL file format specification including thesystemBitrate attribute, which specifies the bitrate of the stream inthe container file identified by the VIDEO element, and width and heightattributes, which specify the dimensions of the encoded video in pixels.Additional attributes can also be defined using the PARAM element. Inseveral embodiments, a “vbv” PARAM element is defined that specified theVBV buffer size of the video stream in bytes. The video bufferingverifier (VBV) is a theoretical MPEG video buffer model used to ensurethat an encoded video stream can be correctly buffered and played backat the decoder device. An example of a “vbv” PARAM element thatspecifies a VBV size of 1000 bytes is as follows:

<param  name=“vbv”  value=“1000”  valuetype=“data” />

An example of VIDEO element including the attributes discussed above isas follows:

<video  src=“http://cnd.com/video1_620kbps.mkv”  systemBitrate=“620” width=“480”  height=“270” >  <param   name=“vbv”   value=“1000”  valuetype=“data” /> </video>

Adaptive bitrate streaming systems in accordance with embodiments of theinvention can support trick play streams, which can be used to providesmooth visual search through source content encoded for adaptive bitratestreaming. A trick play stream can be encoded that appears to be anaccelerated visual search through the source media when played back,when in reality the trick play stream is simply a separate trackencoding the source media at a lower frame rate. In many embodiments ofthe system, a VIDEO element that references a trick play track isindicated by the systemBaseProfile attribute of the VIDEO element. Inother embodiments, any of a variety of techniques can be utilized tosignify within the top level index file that a specific stream is atrick play stream. An example of a trick play stream VIDEO element inaccordance with an embodiment of the invention is as follows:

<video   src=“http://cnd.com/video_test2_600kbps.mkv”  systemBaseProfile=“DivXPlusTrickTrack”   width=“480”   height=“240”>  <param name=“vbv” value=“1000” valuetype=“data” />   <paramname=“header-request” value=“1000” valuetype=“data”   />  </video>

In a number of embodiments of the invention, a “reservedBandwidth” PARAMelement can be defined for an AUDIO element. The “reservedBandwidth”PARAM element specifies the bitrate of the audio stream in Kbps. Anexample of an AUDIO element specified in accordance with an embodimentof the invention is as follows:

<audio  src=“http://cnd.com/audio_test1_277kbps.mkv”  xml:lang=“gem”<param  name=“reservedBandwidth”  value=“128”  valuetype=“data” /> />

In several embodiments, the “reservedBandwidth” PARAM element is alsodefined for a TEXTSTREAM element. An example of a TEXTSTREAM elementincluding a “reservedBandwidth” PARAM element in accordance with anembodiment of the invention is as follows:

<textstream  src=“http://cnd.com/text_stream_ger.mkv”  xml:lang=“gem”<param  name=“reservedBandwidth”  value=“32”  valuetype=“data” /> />

In other embodiments, any of a variety of mechanisms can be utilized tospecify information concerning VIDEO, AUDIO, and SUBTITLE elements asappropriate to specific applications.

A SWITCH element is a mechanism defined within the SMIL file formatspecification that can be utilized to define adaptive or alternativestreams. An example of the manner in which a SWITCH element can beutilized to specify alternative video streams at different bitrates isas follows:

<switch>  <video src=“http://cnd.com/video_test1_300kbps.mkv”/>  <videosrc=“http://cnd.com/video_test2_900kbps.mkv”/>  <videosrc=“http://cnd.com/video_test3_1200kbps.mkv”/> </switch>

The SWTICH element specifies the URLs of three alternative videostreams. The file names indicate that the different bitrates of each ofthe streams. As is discussed further below, the SMIL file formatspecification provides mechanisms that can be utilized in accordancewith embodiments of the invention to specify within the top level indexSMIL file additional information concerning a stream and the containerfile in which it is contained.

In many embodiments of the invention, the EXCL (exclusive) element isused to define alternative tracks that do not adapt during playback withstreaming conditions. For example, the EXCL element can be used todefine alternative audio tracks or alternative subtitle tracks. Anexample of the manner in which an EXCL element can be utilized tospecify alternative English and French audio streams is as follows:

<excl>  <audio   src=“http://cnd.com/english-audio.mkv”  xml:lang=“eng”/>  <audio   src=“http://cnd.com/french-audio.mkv”  xml:lang=“fre”/> </excl>

An example of a top level index SMIL file that defines the attributesand parameters of two alternative video levels, an audio stream and asubtitle stream in accordance with an embodiment of the invention is asfollows:

<?xml version=“1.0” encoding=“utf-8”?> <smilxmlns=“http://www.w3.org/ns/SMIL” version=“3.0” baseProfile=“Language”> <head>  </head>  <body>   <par>    <switch>     <video     src=“http://cnd.com/video_test1_300kbps.mkv”     systemBitrate=“300”      vbv=“600”      width=“320”     height=“240” >      <param       name=“vbv”       value=“600”      valuetype=“data” />      <param       name=“header-request”      value=“1000”       valuetype=“data” />     </video>     <video     src=“http://cnd.com/video_test2_600kbps.mkv”     systemBitrate=“600”      vbv =“900”      width=“640”     height=“480”>      <param       name=“vbv”       value=“1000”      valuetype=“data” />      <param       name=“header-request”      value=“1000”       valuetype=“data” />     </video>    </switch>   <audio     src=“http://cnd.com/audio.mkv”     xml:lang=“eng”>    <param      name=“header-request”      value=“1000”     valuetype=“data” />     <param name=“reservedBandwidth” value=“128”    valuetype=“data” />    </audio>    <textstream    src=“http://cnd.com/subtitles.mkv”     xml:lang=“eng”>     <param     name=“header-request”      value=“1000”      valuetype=“data” />    <param name=“reservedBandwidth” value=“32”     valuetype=“data” />   </textstream>   </par>  </body> </smil>

When the playback device receives a top level index SMIL file, theplayback device can parse the SMIL file to identify the availablestreams. The playback device can then select initial stream and can usethe SMIL file to identify the portions of the container file to downloadto obtain information concerning the encoding of a specific streamand/or to obtain an index to the encoded media within the containerfile.

A process for building a top level index SMIL file in accordance with anembodiment of the invention is illustrated in FIG. 6 . The process 110involves generating (112) headers for the SMIL file, and generating XMLstrings for the video (114), audio (116), subtitle/subtext (118) and/orany other assets (e.g. trick play streams, metadata streams) that are inthe list of assets that the playback server is permitting the playbackdevice to access. At which point, the finalized SMIL file is generated(120).

An assetID is assigned to audio and text streams to uniquely identifythe stream. This value is passed up to the server so the server knowsthe exact audio, subtitle stream being played.

<param  name=“assetID”  value=“123456”  valuetype=“data” />

Although top level index SMIL files are described above, any of avariety of top level index file formats can be utilized to automaticallycreate top level index files for a specific playback device asappropriate to a specific application in accordance with embodiments ofthe invention. The use of top level index files to enable playback ofencoded media using adaptive bitrate streaming in accordance withembodiments of the invention is discussed further below.

Protected Streams

Some or all of the assets associated with a specific piece of contentmay be encrypted or technically protected. Digital Rights Management(DRM) systems enable the communication of cryptographic information toplayback devices so that the playback device can access protectedstreams in the clear (i.e. in an unencrypted form). DRM systems that canbe utilized in adaptive bitrate streaming systems in accordance withembodiments of the invention are described in U.S. patent applicationSer. No. 13/340,623. In many embodiments, the playback server acts as aDRM server. In several embodiments, the playback server is configured toobtain cryptographic information from the playback server.

A process for providing cryptographic information to a playback devicein accordance with an embodiment of the invention is illustrated in FIG.7 . The process 130 includes checking (132) concurrency rules to confirmthat the number of devices on which the user is currently playing backcontent and/or that have requested the right to playback the content isless than a predetermined concurrency limit. Assuming that theconcurrency rules are satisfied, the process retrieves (134)cryptographic information enabling access to the protected streamsassociated with the specific piece of content being accessed by theplayback device. A playback server can generate the cryptographicinformation or obtain the cryptographic information from a DRM server.The cryptographic information is then provided (136) to the playbackdevice.

In many embodiments, the playback device includes cryptographicinformation that is locally stored on the playback device. The devicecryptographic information is typically issued to the playback device atthe time the playback device is first registered with the playbackserver and/or a DRM server. In several embodiments, the contentcryptographic information provided to the playback device is encryptedso that it can be accessed using the playback device's devicecryptographic information. In other embodiments, any of a variety ofdifferent techniques can be utilized to securely provide the playbackdevice with cryptographic information to access protected streams.

Although a specific process for providing cryptographic information to aplayback device in FIG. 7 , any of a variety of processes can beutilized in accordance with embodiments of the invention. In addition,the playback device can obtain cryptographic information from a DRMserver in a process that is entirely independent from the playbackserver and/or the automatic generation of a top level index file. Once aplayback device has the necessary cryptographic information to playbackprotected streams of content, the playback device can commence playback.During playback, the playback device can provide periodic play eventreports to the playback server. The generation and handling of playevent reports in accordance with embodiments of the invention arediscussed further below.

Play Event Reports

Playback devices in accordance with embodiments of the invention cangenerate play event reports periodically and/or in response to specificevents such as (but not limited to) receipt of user instructions (e.g.play, stop, pause commands). The information that can be included in anevent report typically includes the streams being accessed by theplayback device and the current playback location in one or more of thestreams. In several embodiments, the event report includes (but is notlimited to) the time, the audio, and/or subtitle assetIDs, and/or abandwidth measurement. The playback location can be utilized to resumeplayback of the content. The server can utilize play events to perform avariety of functions including (but not limited to) enabling playback toshift from one device to another device. When a user commences playingcontent on a first device and then commences playback of the samecontent on a second device, the playback server can provide the secondplayback device with the current playback location from the most recentplay event report from the first device. The second playback device canthen use the playback location information to resume playback of thecontent. In this way, the user can seamlessly transition from viewingcontent on a first playback device to a second playback device.

A process for handling play event reports in accordance with anembodiment of the invention is illustrated in FIG. 8 . The process 150includes receiving (152) play event reports and determining theappropriate response. In embodiments where there are concurrency limits,the response to a play event report may be to instruct the playbackdevice to “STOP” playback of the content in response to a request toplayback content on another device that exceeds a predeterminedconcurrency limit. Where the content is rented, the playback may exceedthe rental period and the playback server can instruct the playbackdevice to “STOP” playback. The playback server could also instruct theplayback device to request content from alternative streams or to switchto accessing content on a different content delivery network, which mayinvolve transmitting a new top level index file. In several embodiments,the playback server can instruct the playback device to display an errormessage or string. Typically, however, the response is to instruct theplayback device to continue to play the content. The specific conditionsunder which a playback server will suspend playback or allow playback tocontinue are determined based upon the requirements of a specificapplication. The response is sent (156) to the playback device and theplayback device manages playback accordingly.

Although a specific process for handling play event reports isillustrated in FIG. 8 , any of a variety of process for handling playevent reports appropriate to the requirements of a specific applicationcan be utilized in accordance with embodiments of the invention.

Communicating During Adaptive Streaming

Processes are described above for automatically generating a top levelindex file in response to a request to access content from a playbackdevice. A timing diagram illustrating communication between a playbackdevice, a playback server, and a content delivery network during theadaptive bitrate streaming of content in accordance with an embodimentof the invention is illustrated in FIG. 9 . The timing diagram shows aplayback device 12 requesting an index file from a playback server 18.The playback server responds to the request by generating a top levelindex file using a process similar to the process outlined above. Theplayback server 18 provides the top level index file to the playbackdevice 12, which then sends a playback request to the playback server.The playback server checks concurrency rules and retrieves cryptographicinformation enabling playback of protected streams. The cryptographicinformation is provided to the playback device 12. The playback devicecan then use the top level index file to request content from a contentdelivery network 14. In many embodiments, the playback device utilizesadaptive bitrate streaming to obtain the content from the contentdelivery network server(s). The playback device 12 can utilize thecryptographic information received from the playback server 18 to accessprotected streams of content in the clear and playback the content.During playback, the playback device 12 sends playback event reports tothe playback server. The playback server 18 processes the play eventreport and sends a response to the playback device 12, which may causethe playback device to perform any of a variety of functions including(but not limited to) suspending playback of the content.

Although a specific sequence of communication is illustrated in FIG. 9 ,playback devices, playback servers, and content delivery networks cancommunicate in any of a variety of ways appropriate to a specificapplication in accordance with embodiments of the invention.

Although the present invention has been described in certain specificaspects, many additional modifications and variations would be apparentto those skilled in the art. It is therefore to be understood that thepresent invention may be practiced otherwise than specificallydescribed, including various changes in the implementation such asutilizing encoders and decoders that support features beyond thosespecified within a particular standard with which they comply, withoutdeparting from the scope and spirit of the present invention. Thus,embodiments of the present invention should be considered in allrespects as illustrative and not restrictive.

What is claimed is:
 1. A method of generating a top level index,comprising: receiving a request from a specific playback device at aplayback server system, where the request (i) identifies a piece ofcontent and (ii) describes the specific playback device; in response tothe received request, automatically generating a top level indexcustomized for the specific playback device based upon information thatdescribes streams associated with the identified piece of content usingthe playback server system by: selecting a set of streams from thestreams associated with the identified piece of content, where theselection is based upon at least one device capability possessed by thespecific playback device; and generating a top level index customizedfor the specific playback device, where the top level index describeseach stream in the set of streams; and sending the generated top levelindex to the specific playback device using the playback server system.2. The method of claim 1, wherein the top level index comprises locationinformation enabling retrieval of at least one stream of the set ofstreams.
 3. The method of claim 1, wherein each stream of the set ofstreams is stored in a separate container file.
 4. The method of claim 1further comprising, in response to the received request, providing theplayback device with a playback location in the piece of content from aprevious play event.
 5. The method of claim 4 further comprisingreceiving an event report from a different playback device, wherein theevent report comprises the playback location.
 6. The method of claim 1,wherein the set of streams comprises a set of alternative streams andeach of the alternative streams is encoded at a different bitrate. 7.The method of claim 6, wherein the generated top level index describes amaximum bitrate of each of the alternative streams.
 8. The method ofclaim 1, wherein selecting the set of streams comprises filtering thestreams associated with the piece of content based upon the at least onedevice capability possessed by the specific playback device.
 9. Themethod of claim 1, wherein the at least one device capability comprisesat least one selected from the group consisting of playbackcapabilities, display aspect ratio, anticipated maximum networkconnection data rate, device outputs, supported formats, device buffersize, device resolution, device region, and device language.
 10. Themethod of claim 1, wherein the request comprises a product identifierthat describes the specific playback device.
 11. The method of claim 10further comprising: maintaining a database of product identifiers andassociated device capabilities; and utilizing the product identifier ofthe request from the specific playback device to retrieve the at leastone device capability.
 12. The method of claim 1, wherein theinformation that describes streams associated with the identified pieceof content comprises a name of a file containing at least one of thestreams associated with the identified piece of content.
 13. The methodof claim 1, wherein the information that describes streams associatedwith the identified piece of content comprises information for at leastone content delivery network on which the set of streams is located. 14.The method of claim 1, wherein the set of streams comprises a set of oneor more video streams and the information that describes streamsassociated with the identified piece of content comprisescharacteristics of each video stream comprising at least one selectedfrom the group consisting of a maximum bitrate, a frame rate, aresolution, and a sample aspect ratio of the video stream.
 15. Themethod of claim 1, wherein the set of streams comprises a set of one ormore audio streams and the information that describes streams associatedwith the identified piece of content comprises characteristics of eachaudio stream comprising at least one selected from the group consistingof a language, an encoding, and bandwidth requirements of the audiostream.
 16. The method of claim 1, wherein the set of streams comprisesa set of one or more subtitle streams and the information that describesstreams associated with the identified piece of content comprisescharacteristics of each subtitle stream comprising at least one selectedfrom the group consisting of a language, an encoding, and bandwidthrequirements of the subtitle stream.
 17. The method of claim 1, whereinthe request comprises at least one selected from the group consisting ofplayback capabilities of the playback device, a user account to whichthe playback device is registered, and geographic location informationof the playback device.
 18. The method of claim 17, wherein thegeographic location information comprises at least one Internet Protocol(IP) address of the playback device.
 19. The method of claim 1, whereinthe top level index comprises an XML string for each stream in the setof streams.
 20. A method of generating a top level index, comprising:receiving a request from a playback device at a playback server system,where the request (i) identifies a piece of content and (ii) comprises aproduct identifier; identifying at least one device capability of theplayback device based on the product identifier from a database ofproduct identifiers and associated device capabilities; retrievinginformation describing a plurality of streams based upon the identifiedpiece of content and the at least one device capability using theplayback server system, where: the plurality of streams comprises aplurality of alternative streams capable of being utilized to performadaptive bitrate streaming; and each of the alternative streams isencoded at a different bitrate; retrieving a last playback location forthe identified piece of content, where the last playback location forthe identified piece of content is based upon a received event report;in response to the received request, generating a top level index usingthe playback server system, where the top level index comprises:information describing each of the retrieved plurality of streams; and alast playback location for the identified piece of content; and sendingthe generated top level index to the playback device using the playbackserver system.